function EditStatus(container, item, callbackFunc, options) {
  this._container = container;
  this._item = item;
  this._callbackFunc = callbackFunc;

  this._host = (options && options.host) ? options.host : null;
  this._order = (options && options.order) ? options.order : null;
  this._now = (options && options.now) ? options.now : null;
  this._registrar = (options && options.registrar) ? options.registrar : null;
  this._title = (options && options.title) ? options.title : null;
  this._key = (options && options.key) ? options.key : null;
  this._model = Manage.map()[this._key];
  
  this._createElements();
};

EditStatus.prototype._createElements = function() {
  var unique, input, _self = this;

  DOMUtils.removeChildElements(this._container);
  
  unique = MiscUtils.unique();
  new EditStatusGui(unique, this._container, this._item, { order: this._order, now: this._now, registrar: this._registrar, title: this._title, model: this._model });
  
  for (var i = 0, il = this._model.transitions.length; i < il; i++) {
    var transition = this._model.transitions[i];
    if (transition.source.id == this._item.state && transition.validate(this._item, this._order, this._now, this._registrar)) {
      input = document.getElementById(unique + '_' + i);
      input._transition = transition;
      input.onclick = function() { if (this._transition.custom) {
                                     this._transition.custom(_self._item, _self._order, _self._now, _self._registrar, _self._model, _self._callbackFunc, DOMUtils.findPos(this), _self._host);
                                   } else {
                                     this._transition.operate(_self._item, _self._order, _self._now, _self._registrar, _self._model, _self._callbackFunc, _self._host);
                                   }
                                 };
    }
  }
};